<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of Dispatcher
 *
 * @author Loug S
 */
class Dispatcher {
    //put your code here

    /**
     * Le dispatcher qui va lancer l'action en fonction des paramètres
     * @return void
     */
    public function dispatch() {
        $options = Route::recognizeURL($_GET['url']);
        if (empty($options['controller']) || (empty($options['action']))) {
            throw new Exception('Impossible de trouver une route pour cette URL');
        }
        // On s'interesse maintenant aux paramètres en eux mêmes (POST et GET)
        // Les GET sont déjà contenus en parti dans $options, mais il faut traiter ceux ecrits par ?
            $params = array_merge($options, $_GET, $_POST);
        // On enlève notre url que l'on a déjà traitée
            unset($params['url']);
        // On insert notre controller
            if (file_exists('./control/' . $params['controller'] . 'Controller.php')) {
                require_once './control/' . $params['controller'] . 'Controller.php';
            } else {
                throw new Exception('Controleur ' . $params['controller'] . ' introuvable');
            }
            $controller = $params['controller'] . 'Controller';
            if (!class_exists($controller)) {
                throw new Exception('Controller introuvable');
            }
            $oController = new $controller;
            $oController->setParams($params);
            if (!method_exists($oController, $params['action'])) {
                throw new Exception('Action introuvable');
            }
            $oController->{$params['action']}();
        }
}

?>
